////打包成zip文件 返回下载路径
//package com.util.utils;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.util.List;
//import java.util.UUID;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//
//public class createZipPackage {
//    /**
//     * 仅创建打包文件，返回下载路径
//     */
//    public String createPackage(List<Long> ids, Boolean isForStu) {
//        // 创建临时目录，用于存放zip文件
//        String tempDir = RuoYiConfig.getProfile() + "/temp/" + UUID.randomUUID();
//        File tempFolder = new File(tempDir);
//        if (!tempFolder.exists()) {
//            tempFolder.mkdirs();
//        }
//
//        // 创建zip文件路径
//        String zipFileName = "files_" + System.currentTimeMillis() + ".zip";
//        String zipFilePath = tempDir + "/" + zipFileName;
//
//        try {
//            // 打包文件
//            createZipFile(ids, tempDir, zipFilePath,isForStu);
//
//            // 返回相对路径用于前端下载
//            return "/profile/temp/" + tempFolder.getName() + "/" + zipFileName;
//        } catch (Exception e) {
//            log.error("创建打包文件失败", e);
//            FileUtils.deleteFile(tempDir);
//            throw new RuntimeException("文件打包失败", e);
//        }
//    }
//
//    /**
//     * 创建ZIP文件
//     */
//    private void createZipFile(List<Long> ids, String tempDir, String zipFilePath,Boolean isForStu ) throws Exception {
//        try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
//            List<BAdmissionApplication> bAdmissionApplications = bAdmissionApplicationMapper.selectBAdmissionApplicationByAppIds(ids);
//            String[] exportFields = new String[]{"appCode", "stuName", "phone"};
//            CreateExcelUtil<BAdmissionApplication> util = new CreateExcelUtil<>(BAdmissionApplication.class);
//
////            util.init(bAdmissionApplications, "申请信息", exportFields);
////            util.exportExcel();
////            String filePath = util.writeFile(tempDir+"/申请信息.xlsx");
//
//            if (!isForStu){
//                String bmxxhzbName = summaryRegInfoUtil.exportExceltoPath(tempDir, bAdmissionApplications);
//                if (StringUtils.isNotBlank(bmxxhzbName)){
//                    addFileToZip(zos, new File(tempDir+"/"+bmxxhzbName), "报名信息汇总表.xlsx");
//                }
//            }
////            addFileToZip(zos, new File(filePath),   "申请信息.xlsx");
//            log.debug("临时文件路径：{}", tempDir);
//
//            Long index = 0L;
//            // 遍历每个ID
//            for (BAdmissionApplication bAdmissionApplication : bAdmissionApplications) {
//                int count = 0;
//                index++;
//                // 查询该ID对应的记录
//                BAdmissionApplication record = bAdmissionApplication;
//
//                // 为每个ID创建一个子文件夹
//                String idFolderName = StringUtils.padl(index.toString(),3,'0')+"_"+record.getAppCode()+"_"+record.getStuName();
//                String idFolderPath = tempDir + "/" + idFolderName;
//                File idFolder = new File(idFolderPath);
//                if (!idFolder.exists()) {
//                    idFolder.mkdirs();
//                }
//
//                //获取的并不是真正的路径
////                /profile/upload/2025/05/20/2_20250520175957A013.docx
////                /ruoyi/uploadPath/upload/**  将/profile 替换为/ruoyi/uploadPath
//                String sbbPath = applicationTableUtil.getSBbInfo(record.getAppId());
//                if (StringUtils.isNotBlank(sbbPath)){
//                    processFile(sbbPath.replaceFirst("/profile", "/ruoyi/uploadPath"),
//                            ++count+".", idFolderPath, zos, idFolderName);
//                }
//
//                // 处理英文个人简历
//                if (StringUtils.isNotBlank(record.getResume())) {
//                    processFile(record.getResume().replaceFirst("/profile", "/ruoyi/uploadPath"),
//                            ++count+".英文个人简历", idFolderPath, zos, idFolderName);
//                }
//
//                // 刷新
//                zos.flush();
//            }
//        }
//    }
//
//    /**
//     * 处理单个文件：复制到目标文件夹并添加到ZIP
//     */
//    private void processFile(String filePath, String filePrefix, String idFolderPath,
//                             ZipOutputStream zos, String idFolderName) throws IOException {
//        // 在processFile方法中添加路径验证
//        if (StringUtils.isEmpty(filePath)) {
//            log.warn("文件路径为空");
//            return;
//        }
//
//        File sourceFile = new File(filePath);
//        if (!sourceFile.exists()) {
//            log.warn("文件不存在: {}", filePath);
//            return;
//        }
//
//        // 构建目标文件路径
//        String targetFileName = filePrefix + "_" + sourceFile.getName();
//        String targetFilePath = idFolderPath + "/" + targetFileName;
//
//        // 复制文件
//        FileUtils.copyFile(filePath, targetFilePath);
//
//        // 将文件添加到ZIP中
//        addFileToZip(zos, new File(targetFilePath), idFolderName + "/" + targetFileName);
//    }
//
//    /**
//     * 将文件添加到ZIP中
//     */
//    private void addFileToZip(ZipOutputStream zos, File file, String entryName) throws IOException {
//        try (FileInputStream fis = new FileInputStream(file)) {
//            ZipEntry zipEntry = new ZipEntry(entryName);
//            zos.putNextEntry(zipEntry);
//
//            byte[] buffer = new byte[1024];
//            int length;
//            while ((length = fis.read(buffer)) > 0) {
//                zos.write(buffer, 0, length);
//            }
//
//            zos.closeEntry();
//        }
//    }
//}
